package com.ruoyi.web.controller.app;

import com.ruoyi.assets.domain.StateAsset;
import com.ruoyi.assets.domain.dto.StateAssetQueryDto;
import com.ruoyi.assets.service.IStateAssetService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 小程序资产接口控制器
 * 
 * @author ruoyi
 */
@RestController
@RequestMapping("/app/asset")
public class AppStateAssetController extends BaseController {
    
    @Autowired
    private IStateAssetService stateAssetService;
    
    /**
     * 获取资产列表
     * 
     * @param queryDto 查询条件
     * @return 资产列表
     */
    @Anonymous
    @GetMapping("/list")
    public TableDataInfo<StateAsset> list(StateAssetQueryDto queryDto) {
        startPage();
        queryDto.setAuditStatus(1);
        List<StateAsset> list = stateAssetService.selectStateAssetList(queryDto);
        return getDataTable(list);
    }
    
    /**
     * 获取资产详情
     * 
     * @param id 资产ID
     * @return 资产详情
     */
    @Anonymous
    @GetMapping("/{id}")
    public AjaxResult getInfo(@PathVariable Long id) {
        StateAsset stateAsset = stateAssetService.selectStateAssetById(id);
        if (stateAsset != null && stateAsset.getAuditStatus() == 1) {
            return AjaxResult.success(stateAsset);
        }
        return AjaxResult.error("资产不存在或未上架");
    }
    
    /**
     * 按类型获取资产列表
     * 
     * @param type 资产类型
     * @return 资产列表
     */
    @GetMapping("/type/{type}")
    public TableDataInfo listByType(@PathVariable Integer type) {
        startPage();
        StateAssetQueryDto queryDto = new StateAssetQueryDto();
        queryDto.setType(type);
        queryDto.setAssetStatus(1); // 展示中
        queryDto.setAuditStatus(1); // 已上架
        List<StateAsset> list = stateAssetService.selectStateAssetList(queryDto);
        return getDataTable(list);
    }
    
    /**
     * 按价格区间筛选资产
     * 
     * @param min 最小价格
     * @param max 最大价格
     * @return 资产列表
     */
    @GetMapping("/price")
    public TableDataInfo listByPrice(String min, String max) {
        startPage();
        StateAssetQueryDto queryDto = new StateAssetQueryDto();
        queryDto.setAssetStatus(1); // 展示中
        queryDto.setAuditStatus(1); // 已上架
        if (min != null && !min.isEmpty()) {
            queryDto.setRentMin(min);
        }
        if (max != null && !max.isEmpty()) {
            queryDto.setRentMax(max);
        }
        List<StateAsset> list = stateAssetService.selectStateAssetList(queryDto);
        return getDataTable(list);
    }
    
    /**
     * 按面积区间筛选资产
     * 
     * @param min 最小面积
     * @param max 最大面积
     * @return 资产列表
     */
    @GetMapping("/area")
    public TableDataInfo listByArea(String min, String max) {
        startPage();
        StateAssetQueryDto queryDto = new StateAssetQueryDto();
        queryDto.setAssetStatus(1); // 展示中
        queryDto.setAuditStatus(1); // 已上架
        queryDto.setAreaMin(min);
        queryDto.setAreaMax(max);
        List<StateAsset> list = stateAssetService.selectStateAssetList(queryDto);
        return getDataTable(list);
    }
    
    /**
     * 按区域筛选资产
     * 
     * @param streetName 街道名称
     * @return 资产列表
     */
    @GetMapping("/region")
    public TableDataInfo listByRegion(String streetName) {
        startPage();
        StateAssetQueryDto queryDto = new StateAssetQueryDto();
        queryDto.setAssetStatus(1); // 展示中
        queryDto.setAuditStatus(1); // 已上架
        queryDto.setStreetName(streetName);
        List<StateAsset> list = stateAssetService.selectStateAssetList(queryDto);
        return getDataTable(list);
    }
    
    /**
     * 搜索资产
     * 
     * @param keyword 关键词
     * @return 资产列表
     */
    @GetMapping("/search")
    public TableDataInfo search(String keyword) {
        startPage();
        StateAssetQueryDto queryDto = new StateAssetQueryDto();
        queryDto.setAssetStatus(1); // 展示中
        queryDto.setAuditStatus(1); // 已上架
        queryDto.setName(keyword);
        List<StateAsset> list = stateAssetService.selectStateAssetList(queryDto);
        return getDataTable(list);
    }
} 